<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <!-- 

    -->
    <!-- 准备一个容器 -->
    <div id="root">
        <!-- 遍历数组 -->
        <h2>人员列表</h2>
        <input type="text" placeholder="请输入关键字" v-model="keyWord">
        <button @click="sortType=2">升序排序</button>
        <button @click="sortType=1">降序排序</button>
        <button @click="sortType=0">原顺序</button>
        <ul>
            <li v-for="(p,index) of filterPerson" :key="p.id">
                {{p.name}}-{{p.age}}-{{p.sex}}
            </li>
        </ul>
    </div>
</body>
    <script>
        const vm = new Vue({
            el:'#root',
            data:{
                sortType:0,
                keyWord:'',
                persons:[
                    {
                        id:'001',
                        name:'马冬梅',
                        age:18,
                        sex:'女'
                    },
                    {
                        id:'002',
                        name:'周冬雨',
                        age:20,
                        sex:'女'
                    },
                    {
                        id:'003',
                        name:'周杰伦',
                        age:21,
                        sex:'男'
                    },
                    {
                        id:'004',
                        name:'温兆伦',
                        age:22,
                        sex:'男'
                    }
                ]
            },
            computed:{
                filterPerson() {
                    const arr = this.persons.filter((p)=>{
                        return p.name.indexOf(this.keyWord) !== -1
                    })
                    if (this.sortType) {
                        arr.sort((p1,p2)=>{
                            return this.sortType == 2? p1.age-p2.age : p2.age-p1.age
                        })
                    }
                    return arr
                }
            }
        })
    </script>
</html>